<?php

namespace DesignModel;
//工厂模式 类对象的创造类
/*
 *
 * 场景
 * 比如在很多地方使用了 new Database 假如要修改 Database 的名字 只需要修改这里就可以了
 *
 */

use DesignModel\database\mysqli;
use DesignModel\ORM\model\User;

class Factory
{
    public function __construct()
    {
        //系统初始化
    }
  //代理模式 获得主 从数据库 读salve 写master
    static function getDatabase($name){
        $db = Register::get($name);
        if (!$db) {
            $db = new $name();
            Register::set($name, $db);
        }
        return $db;
    }



    static function createDatabaseObj()
    {
        $db = Register::get('db');
        if (!$db) {
            $db = new Database();
            Register::set('db', $db);
        }
        return $db;
    }

    public static function getMysqli()
    {
        $mysqli = Register::get('mysqli');
        if (!$mysqli) {
            $mysqli = new mysqli();
            Register::set('mysqli', $mysqli);
        }
        return $mysqli;
    }

    /**
     * @description:获得User对象
     * @time:
     * @Author: yfl
     * @QQ 554665488
     * @param $id
     * @return User|mixed
     */
    public static function getUser($id)
    {
        $key = 'user_' . $id;
        $user = Register::get($key);
        if (!$user) {
            $user = new User($id);
            Register::set($key, $user);
        }
        return $user;
    }
}